package com.jebel.framework.classic.event.util;

import com.jebel.framwork.common.util.DateUtil;
import com.jebel.framwork.common.util.JsonUtil;
import com.jebel.framwork.common.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Date;

public class SoapEnvUtil {

    private static Logger logger = LoggerFactory.getLogger("info");

    /**
     * 拼装XML数据  ContractRoot 前半部分
     */
    public static String inContractRootHead() {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:crm=\"http://crmsps.webservice.namespace\">");
        stringBuffer.append("<soapenv:Header/>");
        stringBuffer.append("<soapenv:Body>");
        stringBuffer.append("<crm:exchange>");
        stringBuffer.append("<crm:in0>");
        stringBuffer.append("<![CDATA[");
        stringBuffer.append("<ContractRoot>");
        return stringBuffer.toString();
    }

    /**
     * 拼装XML数据  ContractRoot 后半部分
     */
    public static String inContractRootTail() {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("</ContractRoot>");
        stringBuffer.append("]]>");
        stringBuffer.append("</crm:in0>");
        stringBuffer.append("</crm:exchange>");
        stringBuffer.append("</soapenv:Body>");
        stringBuffer.append("</soapenv:Envelope>");
        return stringBuffer.toString();
    }

    /**
     * 拼装XML数据  ContractRoot 前半部分
     *
     * @param busCode            业务功能编码
     * @param serviceCode        接口协议编码
     * @param ServiceContractVer 协议当前使用的版本号
     * @return
     */
    public static String inTcpCont(String busCode, String serviceCode, String ServiceContractVer, String requestId) {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("<TcpCont>");
        stringBuffer.append("<BusCode>").append(busCode).append("</BusCode>");//业务功能编码
        stringBuffer.append("<ServiceCode>").append(serviceCode).append("</ServiceCode>");//接口协议编码
        stringBuffer.append("<ServiceContractVer>").append(ServiceContractVer).append("</ServiceContractVer>");//协议当前使用的版本号
        stringBuffer.append("<ActionCode>").append("0").append("</ActionCode>");//请求标识
        if (!StringUtil.isEmpty(requestId)) {
            stringBuffer.append("<TransactionID>").append(requestId).append("</TransactionID>");//交易流水号
        } else {
            stringBuffer.append("<TransactionID>").append(JsonUtil.getServiceIDBySef(4)).append("</TransactionID>");//交易流水号
        }
        stringBuffer.append("<ServiceLevel>").append("1").append("</ServiceLevel>");//服务等级,处理的优先级 默认1最大9
        stringBuffer.append("<SrcOrgID>").append("100001").append("</SrcOrgID>");//发起方机构代码
        stringBuffer.append("<SrcSysID>").append("1000000001").append("</SrcSysID>");//发起方(系统/平台)编码
        stringBuffer.append("<DstOrgID>").append("100000").append("</DstOrgID>");//落地方机构编码
        stringBuffer.append("<DstSysID>").append("1000000000").append("</DstSysID>");//落地方(系统/平台)编码
        stringBuffer.append("<ReqTime>").append(DateUtil.parseDate2Forat(new Date(), DateUtil.DEFAULT_YYYYMMddHHmmss)).append("</ReqTime>");//请求时间
        stringBuffer.append("<Com_Bus_Info>");
        stringBuffer.append("<Oper_Id>").append("BS001").append("</Oper_Id>");//操作员ID
        stringBuffer.append("</Com_Bus_Info>");//公共信息
        stringBuffer.append("</TcpCont>");
        return stringBuffer.toString();
    }

    /**
     * 拼装XML数据  ContractRoot 前半部分
     *
     * @param busCode            业务功能编码
     * @param serviceCode        接口协议编码
     * @param ServiceContractVer 协议当前使用的版本号
     * @return
     */
    public static String inTcpCont(String busCode, String serviceCode, String ServiceContractVer, String requestId, String operId) {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("<TcpCont>");
        stringBuffer.append("<BusCode>").append(busCode).append("</BusCode>");//业务功能编码
        stringBuffer.append("<ServiceCode>").append(serviceCode).append("</ServiceCode>");//接口协议编码
        stringBuffer.append("<ServiceContractVer>").append(ServiceContractVer).append("</ServiceContractVer>");//协议当前使用的版本号
        stringBuffer.append("<ActionCode>").append("0").append("</ActionCode>");//请求标识
        if (!StringUtil.isEmpty(requestId)) {
            stringBuffer.append("<TransactionID>").append(requestId).append("</TransactionID>");//交易流水号
        } else {
            stringBuffer.append("<TransactionID>").append(JsonUtil.getServiceIDBySef(4)).append("</TransactionID>");//交易流水号
        }
        stringBuffer.append("<ServiceLevel>").append("1").append("</ServiceLevel>");//服务等级,处理的优先级 默认1最大9
        stringBuffer.append("<SrcOrgID>").append("100001").append("</SrcOrgID>");//发起方机构代码
        stringBuffer.append("<SrcSysID>").append("1000000001").append("</SrcSysID>");//发起方(系统/平台)编码
        stringBuffer.append("<DstOrgID>").append("100000").append("</DstOrgID>");//落地方机构编码
        stringBuffer.append("<DstSysID>").append("1000000000").append("</DstSysID>");//落地方(系统/平台)编码
        stringBuffer.append("<ReqTime>").append(DateUtil.parseDate2Forat(new Date(), DateUtil.DEFAULT_YYYYMMddHHmmss)).append("</ReqTime>");//请求时间
        stringBuffer.append("<Com_Bus_Info>");
        stringBuffer.append("<Oper_Id>").append(null != operId ? operId : "BSOO1").append("</Oper_Id>");//操作员ID
        stringBuffer.append("</Com_Bus_Info>");//公共信息
        stringBuffer.append("</TcpCont>");
        return stringBuffer.toString();
    }
}
